查看原文
其他

Linux系统命令找不到了,只能重装系统?

社长 运维研习社 2022-11-05


运维时间长了,总会遇到各种难搞的问题,虽然说Linux不像windows server那样容易出蓝屏,无法启动之类的系统问题,但也不是不会出现系统层面的故障,比如今天在群里有小伙伴遇到的


环境变量问题,导致大部分命令无法使用,环境变量临时修改不生效,也没办法,最终打算重做系统


重做系统,抛开数据不说,系统上所有环境都要重新搭建,当然不是最佳选择


其实系统层面的问题,不管是windows还是linux,都有一种简单的方式,就是镜像修复,windows和linux都提供一种通过镜像修复系统的功能


我直接拿虚拟机来和CentOS7系统来做个简单演示


工具:Hyper-v/CentOS7镜像


要演示修复,我先得把系统搞挂,所以先做个快照


做完快照,做个很多人都做过的操作,rm -rf,把/bin目录下的命令都删掉


有人说bin目录删掉之后,ls命令还可以使用


whereis查一下,你就会发现,/usr/bin目录下也存在ls命令,在CentOS6之前,/usr/bin和/bin是分开的,/bin下是系统级命令,/usr/bin下是用户级别以及应用安装后可执行命令,到CentOS7之后,/bin目录成了/usr/bin目录的软链,两个合并了,所以上面删除了的是软链,接着,重新删一下/usr/bin下命令都干掉


ok,完美的玩了一把rm -rf ,命令全都执行不了了,开始修复


这里用的是hyper-v虚拟机,所以把镜像挂载到cd/dvd之后,重启


挂上去,可以在设置里面看下


之后重启服务器,进修复模式

进来之后,有几个选项

  • Install CentOS Linux 7 in basic graphics mode

这个选项可让您在安装程序无法为您的显卡载入正确的驱动程序的情况下使用图形模式安装 

  • Rescue a CentOS Linux system

当安装完成的CentOS无法开机时,选择此项目进行修复

  • Run a memory test

运行内存测试

  • Boot from local drive

从本地磁盘引导


我们这肯定是修复系统,所以选择Rescue进入

这里解释很清楚,修复就是通过把原来的系统挂载在/mnt/sysimage下面,然后你可以做任何操作,我们直接选1,就是继续这个操作,2是以只读的方式,因为我这里是命令删掉了,我要拷贝文件,所以肯定不能选只读,其他两个选型就不多说了


现在就进入救援模式了,我们看下原来的系统,也就是/mnt/sysimage下面,是不是我原来的系统

可以看到,正是我自己的系统文件,bin目录也确实没有,我们现在做修复,把现在的/usr/bin下的文件拷贝过去,并重新创建/bin软链



拷贝完之后,关机,把光盘弹出,重新启动进入系统,重启之后会做一次文件系统的恢复,需要比较长的时间,耐心等着就好


重启之后,即可登录系统,正常使用命令,不过如果之前有安装应用的话,因为这里只是从镜像中复制了系统基础命令,安装后的应用命令没办法恢复了


仅作为一个思路,如果有系统类问题,可以通过这样的方式进行修复


话题

您运维过程中,遇到过什么样的系统层面的问题难以解决?


欢迎文末留言




运维技术交流群

「运维研习社」建立了运维技术交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起进群交流学习。


扫描添加好友邀您进运维交流群


服务器又被挖矿了,怎么防?

Nginx开启SSL会话复用,性能提升多少?

推荐这款web安全分析工具,包你满意!

停止维护的CentOS6,怎么使用yum?



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存